/** @jsxImportSource @emotion/react */
import * as React from "react";
import {Button, TextArea, Text, useToast,} from "customize-easy-ui-component";
import {InspectRecordLayout, InternalItemProps, useItemInputControl} from "../../common/base";
import {useMedia} from "use-media";
import {assertNamesUnique} from "../../common/eHelper";
import {EditStorageContext} from "../../StorageContext";
import {itemA下结论} from "./Conclusion";
import {itemA检验项} from "./InspectionItem";
import {display额定功率, input额定是} from "../../boiler/rarelyVary";
import {render设备类别} from "../../common/render";

export const config设备概况 = [
    //没有在结论概况中出现的：  在头部抬头栏目出现
    [['工程名称', {n:'工程名称', t:'B'}], ],
    //不用台账的安装单位？
    [['安装单位', {n:'安装单', t:'B'}], ['安装联系人', '安装联人'] ],
    [['安装许可证编号', '安许可号'], ['联系电话', '安装联电'] ],
    [['使用单位', '_$使用单位'], ['邮政编码', '_$使用单位邮编'] ],
    [['使用单位地址', '_$使用单位地址'], ['联系人', '_$单位联系人'] ],
    [['使用单位代码', '_$使用单位信用码'],  ['使用单位电话', '_$使用单位电话'], ],
    [['锅炉安装地点', '_$设备使用地点'], ['设备代码', '_$设备代码', ], ],
    [['制造单位', '_$制造单位'], ['制造日期', '_$制造日期']],
    [['产品编号', '_$出厂编号'], ['锅炉型号', '_$型号'], ],
    [['加热方式', '_$加热方式',], ['燃料种类', '_$燃料种类',] ],
    //拆分    //orc?.额定蒸发量  .是功率
    [[display额定功率, '_$额定蒸发量', input额定是], ['锅筒工作压力',  '_$锅筒工作压力', 'MPa'],  ],
    //锅筒工作温度？ 台账没有等同的参数？  ['额定出口压力', '_$设计出口压力','MPa']
    [['过热蒸汽出口压力','_$过热器出口压', 'MPa'],  ['过热蒸汽出口温度','_$过热器出口温', '℃'], ],
    [['给水温度','_$给水温度', '℃'], ['燃烧方式', '_$燃烧方式'],  ],
    [['安装告知日期', {n:'告知日',t:'d'}],  [' ', {r:' '}], ],
    //下结论编辑器的
    [['监检开始日期', '_$检验日期1'], ['监检结束日期', '_$检验日期']],
];
export const 许可级别选=['A级','B级'];
export const config证书概要 = [
    //施工==安装单位，在结论概况页面录入的；
    [['施工单位名称', '_$安装单'], ],
    [['许可级别', {n:'许可级',t:'l',l:许可级别选}], ['许可证编号', '_$安许可号'], ],
    [['使用单位名称', '_$使用单位'], ],
    [['制造单位名称', '_$制造单位']  ],
    //台账必须录入:设备名称？
    [['设备类别', '_$设备类别',render设备类别], ['设备品种(名称)','_$设备名称']],
    [['产品型号', '_$型号'], ['产品编号', '_$出厂编号'] ],
    [['设备代码', '_$设备代码'], ['制造日期', '_$制造日期'] ],
    [['使用地点', '_$设备使用地点']],
    [['使用单位内部编号','_$单位内部编号'], ['使用登记证编号', '_$使用证号'] ],
    [['加热方式', '_$加热方式'], ['燃料种类', '_$燃料种类', ], ],
    //orc?.额定蒸发量  .是功率
    [['额定蒸发量(功率)', '_$额定蒸发量', input额定是], ['额定出口压力', '_$设计出口压力','MPa'] ],
    //设计出口温度 svp?.设出口温);     这不是用台账的:额定工作压力  ['额定温度', '_$额定温度','℃']
    [['额定出口温度', '_$出口温度','℃'], ['允许工作压力', '许工压','MPa'] ],
    //允许工作温度=额定温度；    台账3字段：耐压试验压力、水压试验压力、液压试验压力；
    [['允许工作温度', '_$额定温度','℃'], ['水(耐)压试验压力', '试验压','MPa'] ],
];


export const EntranceSetup =
    React.forwardRef((
        {children, show, alone = true, repId, verId, rep}: InternalItemProps, ref
    ) => {
        const atPrint = useMedia('print');
        const toast = useToast();
        const doCheckNames = React.useCallback((verId: string) => {
            const result = assertNamesUnique([{value: rep?.tzFields},
                {value: config设备概况, type:'esnt'}, {value: config证书概要, type:'esnt'},
                {value:[...itemA下结论, ...itemA检验项, ]},
                {value:['Projects',  ]}
                ]);
            toast({title: "完成！", subtitle: result ? "没发现冲突" : "测试开关没开", intent: "success"});
        }, [rep,toast]);
        const {storage, setStorage} =React.useContext(EditStorageContext) as any;
        const getInpFilter = React.useCallback((par: any) => {
            const {_tblFixed, } =par||{};
            return {_tblFixed, };
        }, []);
        const {inp, setInp} = useItemInputControl({ref});
        if (atPrint) return null;
        else return (
            <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show}
                                 alone={alone} label={'初始化本报告，默认值配置等'}>
                {process.env.REACT_APP_TEST==='true' && <><div>
                    <Text variant="h5">构建开发模板时的工具：校验模板的存储name冲突；</Text>
                    <Button intent='primary' onPress={() => doCheckNames(verId!)}>校验模板name唯一性</Button>
                    <Text variant="h5">设置待测试表格的各列宽度：</Text>
                    <TextArea value={storage?._tblFixed || ''} rows={2} onChange={e =>{
                        JSON.parse(e.currentTarget.value??'[]');
                        setStorage({ ...storage, _tblFixed: e.currentTarget.value || undefined}); }}/>
                </div></>
                }
                <hr/>
            </InspectRecordLayout>
        );
});
